#ifndef MATRIX_H
#define MATRIX_H

#include "../MyHead.h"

class Matrix
{
    public:
        Matrix(int row = default_row, int col = default_col);
        Matrix(int, int, int *);
        Matrix(const Matrix &);

        Matrix &operator=(const Matrix &);
        int &operator()(int, int);
        int &operator()(int, int) const;
        int getRowSize() const;
        int getColSize() const;
        //friend ostream &operator<<(ostream &, const Matrix &);
        //friend istream &operator>>(istream &, Matrix &);
        virtual ~Matrix();
    protected:
    private:
        int row;
        int col;
        int **mtx;
        static const int default_col = 5;
        static const int default_row = 5;
        void initMatrix(int *);
        void initMatrix(int **);
        void initData(int r, int c);
};

#endif // MATRIX_H
